import getRequestConfigDescrible from '../../utils/request-config-desc';
import getDropdownOptionPropsDescrible from '../../utils/dropdown-option-props-desc';
import fieldTypes from '../../utils/field-types-desc';

const fieldType = fieldTypes.find(({ code }) => code === 'check') || {};

export default {
    attributes: [
        {
            params: 'v-model',
            des: '绑定值',
            type: fieldType.valueType,
            values: '-',
            defaultVal: '-',
        },
        {
            params: 'props',
            des: '表单元素配置; 详细配置请查看下方【props 配置项】',
            type: 'Object',
            values: '-',
            defaultVal: '-',
            details: [
                {
                    title: '配置项【props】',
                    configList: [
                        {
                            params: 'type',
                            des: `表单项控件的类型(此控件的 type 固定为 "${fieldType.code}")`,
                            type: 'String',
                            values: '-',
                            defaultVal: '-',
                        },
                        {
                            params: 'value',
                            des: '表单项控件的默认值，若绑定值为空，将获取该值作为初始值',
                            type: fieldType.valueType,
                            values: '-',
                            defaultVal: '-',
                        },
                        {
                            params: 'size',
                            des: '尺寸大小',
                            type: 'String',
                            values: '"large" | "default" | "small"',
                            defaultVal: '"default"',
                        },
                        {
                            params: 'groupStyle',
                            des: '复选框风格',
                            type: 'String',
                            values: '"button"',
                            defaultVal: '-',
                        },
                        {
                            params: 'disabled',
                            des: '是否禁用',
                            type: 'Boolean',
                            values: 'true | false',
                            defaultVal: 'false',
                        },
                        {
                            params: 'min',
                            des: '可被勾选的最小数量',
                            type: 'Number',
                            values: '-',
                            defaultVal: '-',
                        },
                        {
                            params: 'max',
                            des: '可被勾选的最大数量',
                            type: 'Number',
                            values: '-',
                            defaultVal: '-',
                        },
                        {
                            params: 'options',
                            des: '控件选项的配置数据；选项选中时，组件内默认从选项数据内取 "value" 字段对应的值作为绑定值，取 "label" 字段对应的值作为展示；如果数据内不存在这两个字段名，则需要使用 optionProps 属性来指定',
                            type: 'Array',
                            values: '-',
                            defaultVal: '-',
                        },
                        {
                            params: 'optionProps',
                            des: '指定控件选项配置的键/值所对应的字段编码',
                            type: 'Object',
                            values: '-',
                            defaultVal: '请查阅下方 optionProps 配置项说明',
                            details: [
                                {
                                    title: '配置项【optionProps】',
                                    configList: getDropdownOptionPropsDescrible('check'),
                                },
                            ],
                        },
                        {
                            params: 'requestConfig',
                            des: '通过接口请求选项数据的配置；详情请查阅下方说明',
                            type: 'Object',
                            values: '-',
                            defaultVal: '-',
                            details: [
                                {
                                    title: '配置项【requestConfig】',
                                    describes: [
                                        '除以下字段外，requestConfig 还支持传入axios的所有可配置参数，详细配置说明请查阅 https://github.com/axios/axios#request-config',
                                    ],
                                    configList: getRequestConfigDescrible('item'),
                                },
                            ],
                        },
                        {
                            params: 'validateEvent',
                            des: '输入时是否触发表单的校验',
                            type: 'Boolean',
                            values: 'true | false',
                            defaultVal: 'true',
                        },
                    ],
                },
            ],
        },
    ],
    events: [
        {
            name: 'change',
            des: '输入框失焦后值内容修改触发的事件',
            params: '({ value, label, data }, props)',
        },
    ],
    slots: [],
    refs: [],
};
